export interface User {
  id: string;
  username: string;
  email: string;
  avatar?: string;
  bio?: string;
  createdAt: string;
}

export interface AuthResult {
  success: boolean;
  message: string;
}

export interface AuthState {
  user: User | null;
  token: string | null;
  isLoading: boolean;
  error: string | null;
}

export interface AuthContextType extends AuthState {
  login: (email: string, password: string) => Promise<AuthResult>;
  logout: () => Promise<void>;
  register: (username: string, email: string, password: string) => Promise<AuthResult>;
  updateProfile: (data: Partial<User>) => Promise<void>;
} 